package com.chb.flink

import java.net.URL
import org.apache.flink.api.scala.ExecutionEnvironment

/**
 * 需求：读取本地数据文件，统计文件中每个单词出现的次数。
 * 根据需求，很明显是有界流（批计算），所以采用另外一个上下文环境：ExecutionEnvironment
 */
object BatchWordCount {
    def main(args: Array[String]): Unit = {
        //初始化flink的环境
        val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
        //导入隐式转换

        import org.apache.flink.api.scala._ //读取数据
        val dataURL = getClass.getResource("/wc.txt") //wc.txt文件在main目录下的resources中
        val data: DataSet[String] = env.readTextFile(dataURL.getPath)
        //计算
        val result: AggregateDataSet[(String, Int)] = data.flatMap(_.split(" "))
            .map((_, 1))
            .groupBy(0) //其中0代表元组中的下标，“0”下标代表：单词
            .sum(1) //其中1代表元组中的下标，“1”下标代表：单词出现的次数
        //打印结果
        result.print()
    }
}
